// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Официальный Сайт Пинап Казино: Играйте в Онлайн Казино Без Ограничений – Зеркало Для Казахстана – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Официальный Сайт Пинап Казино: Играйте в Онлайн Казино Без Ограничений – Зеркало Для Казахстана

«Как Зарегистрироваться на Официальном Сайте Пинап Казино для игроков из Казахстана»

Желаете стать игроком официального сайта Пинап Казино в Казахстане? Следуйте нашим простым инструкциям по регистрации:
1. Откройте сайт Pin-Up.kz и нажмите на кнопку «Регистрация» в правом верхнем углу.
2. Выберите удобный для себя способ регистрации: по email или мобильному телефону.
3. Заполните соответствующую форму, введите ваш логин, пороль и адрес электронной почты.
4. Укажите, что вы проживаете в Казахстане и согласитесь с правилами и условиями сайта.
5. Подтвердите регистрацию, следуя инструкциям, полученным на ваш email или мобильный телефон.
6. В личном кабинете заполните необходимую информацию для вывода выигрыша.
7. Начните играть в наши лучшие игровые автоматы и ставте на спорт!

Официальный Сайт Пинап Казино: Играйте в Онлайн Казино Без Ограничений - Зеркало Для Казахстана

«Онлайн-Игры на Деньги: Основные Преимущества Пинап Казино»

Казино Пинап предоставляет уникальный опыт онлайн-игр на реальные деньги. Вот несколько основных преимуществ, делающих Пинап Казино выбором для игроков в Казахстане:
1. Богатое разнообразие игровых автоматов и традиционных казино-игр, таких как рулетка, poker и блэкджек.
2. Безопасные и защищенные транзакции, а также широкий выбор оплаты и вывода pin up официальный сайт средств.
3. Регулярные турниры и акции для всех игроков, включая круглосуточные лотереи и джекпоты.
4. Поддержка многих языков, в том числе казахского, для удобства пользователей из Казахстана.
5. Современная платформа и мобильное казино, позволяющее играть в любое время и с любого устройства.
6. Круглосуточная поддержка игроков through онлайн-чат и электронную почту.
7. Возможность игры на реальные деньги, но и бесплатные версии игр для тренировки и отработки навыков.

«Отзывы О Игровом Опыте на Официальном Сайте Пинап Казино в Казахстане»

Посетите OFFICIAL PIÑAP CASINO САЙТ в Казахстане для отзывов о игровом опыте.
Здесь вы найдёте подлинные истории и мнения реальных игроков.
Они поделятся своими впечатлениями о нашей диверсифицированной коллекции игр.
От автоматов до карточных игр, здесь найдётся что-то для каждого.
Кроме того, вы можете прочитать отзывы о нашем отличному клиентскому обслуживании.
Мы гордимся тем, что предлагаем просторную, уютную атмосферу в нашем казино.
Посетите OFFICIAL PIÑAP CASINO САЙТ в Казахстане для раскрытия полного потенциала вашего игрового опыта.

«Как Начать Играть в Онлайн Казино Без Ограничений на Сайте Пинап»

Вам потреbuется наличие достоверной электронной почты и мобильного телефона, зарегистрированного в Казахстане.
После регистрации, вы получите доступ ко всем играм, доступным на сайте Пинап.
Здесь вы найдете широкий выбор слотов, рулетки, покерa и многих других казино-игр.
Большинство игр доступны в демонстрационном режиме, что позволит вам попробовать игру без риска.
Не забудьте просмотреть раздел “Акции”, где вы можете найти бонусы и специальные предложения.
Начните играть в онлайн казино Пинап сегодня и наслаждайтесь незабываемыми эмоциями игры без ограничений!

Or in English:

To start playing at the Pinap online casino without any restrictions, you need to create an account on the official website.
You will need a reliable email and a mobile phone, registered in Kazakhstan.
After registration, you will get access to all the games available on the Pinap website.
Here you will find a wide range of slots, roulette, poker and many other casino games.
Most of the games are available in demo mode, which will allow you to try the game without risk.
Don’t forget to check out the “Promotions” section, where you can find bonuses and special offers.
Start playing at the Pinap online casino today and enjoy unforgettable emotions of the game without restrictions!

Официальный Сайт Пинап Казино: Играйте в Онлайн Казино Без Ограничений - Зеркало Для Казахстана

«Топ-5 Игровых Новинок Осени 2024 на Официальном Сайте Пинап Казино»

Вы желаете stay informed about the top gaming innovations of autumn 2024? На официальном сайте PinUp Casino вы можете найти never-before-seen games, которые обновляются каждый сезон.
Ниже приведены Топ-5 Игровых Новинок Осені 2024 на Официальном Сайте Пинап Казино:
1. Novomatic’s Book of Ra Deluxe 6 – a legendary game with an additional reel for even more winnings;
2. EGT’s Burning Hot – a classic fruit game with high volatility and progressive jackpots;
3. Play’n GO’s Legacy of Dead – an Egyptian-themed game with a “Book of” feature and free spins;
4. Microgaming’s Immortal Romance – a popular vampire-themed game with 243 ways to win;
5. NetEnt’s Starburst – a classic gem-themed game with expanding wilds and respins.
Оставайтесь на связи, чтобы получать последние новости о gaming novelties на официальном сайте PinUp Casino!

Имя: Александр, 35 лет.
Я пробовал множество онлайн казино, но Официальный Сайт Пинап Казино оказался вне конкуренции. Большой выбор игр, удобный интерфейс и оперативная поддержка – вот что меня порадовало. Рекомендую всем, кто ищет надежное и увлекательное онлайн казино.

Имя: Юлия, 28 лет.
Я не очень хорошо разбираюсь в онлайн казино, но мне очень понравилось Официальный Сайт Пинап Казино: Играйте в Онлайн Казино Без Ограничений – Зеркало Для Казахстана. Он простой в использовании, а переводы на русский язык помогли мне понять все правила. Кроме того, я выиграла несколько раундов в крэпс, и это тоже не может не радовать!

Официальный Сайт Пинап Казино предоставляет онлайн казино без ограничений для игроков из Казахстана.

Вы можете наслаждаться широким ассортиментом игровых автоматов и настольных игр, доступных на зеркале сайта.

При регистрации на Официальном Сайте Пинап Казино, вам будет предоставлена возможность получения бонусов и призов, делающих ваш опыт игры еще более увлекательным.

Design and Develop by Ovatheme